100 REM ***** MAUS DOS 64 ***** 110 REM (C) 1986 BY DIRK JANSEN 120 REM + BENOETIGT 'MAUSI 64'+ 130 REM (C) 1986 BY DIRK JANSEN 140 REM 150 REM V1.0 - 04.05.1986 160 REM ----------------------- 170 : 172 REM @S1024 174 REM @E20000 176 : 180 DA=PEEK(186):IF DA<>9 THEN DA=8:REM - FLOPPY ADRESSE 200 IF F=0 THEN F=-1:LOAD"MAUSI 64",DA,1 210 IF F=1 THEN 31280 220 IF F=2 THEN 31300 300 POKE 788,PEEK(788)+3:REM - STOPTASTE AUSSCHALTEN 470 : 480 REM *** MAUS FUNKTIONEN *** 490 : 500 DEF FNAD(X)=49152+3*X 510 DEF FNPA(X)=679+X 520 DEF FNVA(X)=PEEK(FNPA(X)) 530 DEF FNWO(X)=PEEK(X)+PEEK(X+1)*256 540 DEF FNLO(X)=X AND 255 550 DEF FNHI(X)=INT(X/256) 560 DEF FNXP(X)=FNWO(682+X*3)-24 570 DEF FNYP(X)=PEEK(681+X*3)-34 580 DEF FNXT(X)=INT(FNXP(X)/8)-1 590 DEF FNYT(X)=INT(FNYP(X)/8)-1 600 DEF FNKY(X)=PEEK(680+X*17) 610 DEF FNPO(X)=PEEK(695+X) 620 DEF FNST(X)=(FNPO(0)-160)/4 630 DEF FNER(X)=PEEK(698) 640 DEF FNSP(X)=PEEK(693) 650 DEF FNDT(X)=-(PEEK(703) AND 15)*(X=0)-(PEEK(703) AND 2^(8-X))/2^(8-X)*(X>0) 660 DEF FNKA(X)=680+X*13 670 : 680 REM *** DIM ARRAYS *** 690 : 700 DIM NP$(19) :REM - NOTE PAD INHALT 710 DIM FE$(143):REM - FILE ENTERYS 720 DIM TY$(4) :REM - FILE TYPES 730 DIM CO$(15) :REM - COLOR NAMES 740 DIM NO$(9) :REM - OPTIONS NAME 750 DIM FO$(9) :REM - OPTIONS FILE NAME 760 DIM SO(9) :REM - OPTIONS STARTADR 762 DIM ER$(29) :REM - FEHLERMELDUNGEN 770 : 780 REM *** VARIABELN *** 790 : 810 DN$="0" :REM - UNIT 820 PA=4 :REM - PRINTER ADR 830 PS=7 :REM - PRINTER SEC. 870 : 880 REM *** READ DATA *** 890 : 900 RESTORE 910 FOR I=0 TO 15:READ CO$(I):NEXT I:REM - READ COLOR NAMES 920 FOR I=0 TO 4:READ TY$(I):NEXT I:REM - READ FILE TYPE NAMES 930 FOR I=0 TO 29:READ ER$(I):NEXT I:REM - READ ERROR TEXT 970 : 980 REM *** HAUPT PROGRAMM *** 990 : 1000 GOSUB 40000:REM - SHOW SCREEN 1002 GOSUB 42000:REM - READ PARAMETER 1010 GOSUB 41000:REM - INSERT DISK 1030 GOSUB 43000:REM - READ NOTE PAD 1040 GOSUB 44000:REM - READ OPTIONS 1050 GOSUB 45000:REM - READ DIRECTORY 1100 SF%=0:MF%=144 1110 GOSUB 54000 1120 F%=0:GOSUB 51000:IF F%=1 THEN GOSUB 54000:GOTO 1200 1122 IF F%=2 THEN 1200 1124 IF F%=3 THEN GOSUB 54000 1130 IF YP=2 AND XP>9 AND XP<26 AND SF%+40<=AF% THEN SF%=SF%+40:GOTO 1110 1132 IF YP=2 AND XP>25 AND SF%-40=>0 THEN SF%=SF%-40:GOTO 1110 1134 IF YP<4 OR YP>23 THEN 1120 1140 IF FL THEN 2000 1150 A=-(XP>20)*20+YP-4 1160 IF SF%+A>AF% THEN GOTO 1120 1170 SYS FNAD(16),4,1,20,1,32,PEEK(646) 1180 SYS FNAD(16),4,21,20,1,32,PEEK(646) 1190 SYS FNAD(13),YP,1-(XP>20)*20:PRINT"[186]";:MF%=SF%+A 1200 NF$=FE$(MF%) 1210 SYS FNAD(13),24,7:PRINT "";MID$(NF$,2,16);"[146]"; 1220 A=ASC(LEFT$(NF$,1)+CHR$(0)):TY$=" ":IF (A AND 128)=0 THEN TY$="*" 1230 TY$=TY$+TY$(A AND 7) 1240 IF (A AND 64) THEN TY$=TY$+"<" 1250 SYS FNAD(13),24,28:PRINT "";LEFT$(TY$+" ",5);"[146]"; 1260 A=ASC(MID$(NF$,18,1)+CHR$(0))+ASC(MID$(NF$,19,1)+CHR$(0))*256 1270 SYS FNAD(13),24,38:PRINT "";RIGHT$(" "+STR$(A),3);"[146]"; 1280 SYS FNAD(13),25,37:PRINT "";RIGHT$(" "+STR$(FB%),3);"[146]"; 1290 GOTO 1120 2000 IF (FL AND 2)=2 THEN FL=FL AND 253:GOTO 1010 2010 IF (FL AND 4)<>4 THEN 2060 2050 SYS 64738 2060 IF (FL AND 8)<>8 THEN 1120 2100 PRINT"[147]";CHR$(9);CHR$(142); 2110 PRINT"LOAD"+CHR$(34); 2120 FOR I=1 TO 16:A$=MID$(FE$(MF%),1+I,1):IF A$<>CHR$(160) THEN PRINT A$; 2130 NEXT I:PRINT CHR$(34);",";DA;",1" 2140 PRINT"" 2150 PRINT"RUN" 2160 POKE 631,19:POKE 632,13:POKE 633,13:POKE 198,3:END 9999 PRINT"DEAD END":GOTO 9999 19970 : 19980 REM *** FEHLER BEHANDLUNG *** 19990 : 20000 PRINT:PRINT"[147]";CHR$(14);CHR$(8):POKE 198,0 20010 PRINT TAB(10);"********************" 20020 PRINT TAB(10);"* *" 20030 PRINT TAB(10);"* [211][217][211][212][197][205] [160][198][197][200][204][197][210] *" 20040 PRINT TAB(10);"* *" 20050 PRINT TAB(10);"********************" 20060 PRINT"" 20070 PRINT"Z.[194].: [196]RUECKEN VON [211][212][207][208]/[210][197][211][212][207][210][197]" 20080 PRINT" [196]ISKETTENFEHLER" 20090 PRINT" [198]EHLER BEIM [208]ROGRAMMSTART" 20092 PRINT" [196]RUCKER NICHT ANGESCHLOSSEN" 20100 PRINT"" 20110 PRINT "[194]ITTE DRUECKEN [211]IE:" 20120 PRINT " F1 [146] [203]ALTSTART" 20130 PRINT " F3 [146] [215]ARMSTART ([196]ISK. WECHSELN)" 20140 PRINT " F5 [146] [194][193][211][201][195] [214]2.0 ([210]ESET)" 20150 PRINT " F7 [146] [198]EHLERQUELLE" 20160 PRINT" " 20170 GET A$:IF A$<>"" THEN 20200 20180 PRINT"[211][217][211][212][197][205] [198][197][200][204][197][210]" 20190 GET A$:IF A$="" THEN 20160 20200 IF A$="[133]" THEN RUN 20210 IF A$="[134]" THEN 1000 20220 IF A$="[135]" THEN SYS 64738 20230 IF A$<>"[136]" THEN 20160 20240 PRINT"[147]" 20250 PRINT,"* [198]EHLERQUELLE *" 20260 PRINT"" 20262 A=PEEK(700):IF A>29 THEN A=0 20270 PRINT"[198]EHLERART: ";ER$(A) 20280 PRINT"" 20290 PRINT"[198]EHLERNUMMER:";A 20300 PRINT"" 20310 PRINT,"- [194]ITTE [212]ASTE [196]RUECKEN -" 20320 GET A$:IF A$="" THEN 20320 20330 GOTO 20000 29970 : 29980 REM *** PARAMETER *** 29990 : 30000 SYS FNAD(7) :REM - SCR RETTEN 30002 SYS FNAD(13),4,1 30010 PRINT SPC(26);"[176][192][192][189] [221][146]" 30020 PRINT SPC(26);"[221] [212]EXT- [221][146]" 30030 PRINT SPC(26);"[221] [210]AHMEN- [221][146]" 30040 PRINT SPC(26);"[221] [194]ILD- [221][146]" 30050 PRINT SPC(26);"[221] [205]AUSFARBE [221][146]" 30060 PRINT SPC(26);"[171][192][192][192][192][192][192][192][192][192][192][192][179][146]" 30070 PRINT SPC(26);"[221] [196]RUCKER- [221][146]" 30080 PRINT SPC(26);"[221] [198]LOPPY- [221][146]" 30090 PRINT SPC(26);"[221] [205]AUSDATEN [221][146]" 30100 PRINT SPC(26);"[171][192][192][192][192][192][192][192][192][192][192][192][179][146]" 30102 PRINT SPC(26);"[221][160][211]PEICHERN [221][146]" 30104 PRINT SPC(26);"[173][192][192][192][192][192][192][192][192][192][192][192][189][146]" 30110 GOSUB 51000:XO=XP:YO=YP:IF YP<3 OR YP>15 THEN XP=0 30120 IF XP<27 THEN FL=FLOR1:SYS FNAD(8):SYS FNAD(18):RETURN 30130 IF YP=4 OR YP=9 OR YP=13 THEN 30110 30140 ON YP-4 GOSUB 30160,30170,30180,30190,20000,30500,30300,30400,20000,46000 30150 GOTO 30110 30160 A=646:A$="[212]EXTFARBE":GOTO 30200 30170 A=53280:A$="[210]AHMENF.":GOTO 30200 30180 A=53281:A$="[194]ILDFARBE":GOTO 30200 30190 A=703:A$="[205]AUSFARBE" 30200 B=PEEK(A) AND 15:SYS FNAD(7) 30210 SYS FNAD(13),4,1 30212 PRINT TAB(12);"[176][192][192][192][192][192][192][192][192][192][192][192][174][146]" 30214 PRINT TAB(12);"[221][146] ";LEFT$(A$+" ",9);" [221][146]" 30216 PRINT TAB(12);"[171][192][192][192][192][192][192][192][192][192][192][192][179][146]" 30220 FOR I=0 TO 15 30230 PRINT TAB(12);"[221] "; 30240 IF I=B THEN PRINT"[157][186]"; 30250 PRINT LEFT$(CO$(I)+" ",9);" [221][146] 30260 [130] I 30270 [153] [163]12);"/TANTANTANTANTANTANTANTANTANTANTANEXPWAIT" 30280 [141] 51000:XO[178]XP:[139] YP[179]7 [176] YP[177]23 [167] XP[178]0 30282 [139] XP[179]13 [176] XP[177]23 [167] YO[178]YP:FL[178]FL [176] 1:[158] [165]AD(8):[158] [165]AD(18):[142] 30290 B[178]YP[171]7:[151] A,([194](A) [175] 240)[170](B [175] 15):[158] [165]AD(18):[137] 30210 30300 [158] [165]AD(7) 30310 [158] [165]AD(13),4,1 30311 [153] [163]12);"ORTANTANTANTANTANTANTANTANTANTANTANTANTAN^WAIT" 30312 [153] [163]12);"(null)WAIT ASCLOPPYDATEN (null)WAIT" 30314 [153] [163]12);"-TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPWAIT" 30440 [158] [165]AD(13),7,14:[153]" WAIT":[139] [165]DT(1) [167] [158] [165]AD(13),7,14:[153]"SQRWAIT" 30442 [158] [165]AD(13),8,14:[153]" WAIT":[139] [165]DT(2) [167] [158] [165]AD(13),8,14:[153]"SQRWAIT" 30444 [158] [165]AD(13),9,14:[153]" WAIT":[139] [165]DT(3) [167] [158] [165]AD(13),9,14:[153]"SQRWAIT" 30450 [141] 51000:XO[178]XP:[139] YP[179]7 [176] YP[177]17 [167] XP[178]0 30452 [139] XP[179]13 [176] XP[177]30 [167] YO[178]YP:FL[178]FL [176] 1:[158] [165]AD(8):[158] [165]AD(18):[142] 30460 [139] YP[178]7 [167] [151] 703,([194](703) [175] 127)[170](1[171][165]DT(1))[172]128 30462 [139] YP[178]8 [167] [151] 703,([194](703) [175] 191)[170](1[171][165]DT(2))[172]64 30464 [139] YP[178]9 [167] [151] 703,([194](703) [175] 223)[170](1[171][165]DT(3))[172]32 30466 [139] YP[178]14 [175] XP[179]22 [175] [194](693)[179]255 [167] [151] 693,[194](693)[170]1 30468 [139] YP[178]14 [175] XP[177]22 [175] [194](693)[179]245 [167] [151] 693,[194](693)[170]10 30470 [139] YP[178]16 [175] XP[179]22 [175] [194](693)[177]0 [167] [151] 693,[194](693)[171]1 30472 [139] YP[178]16 [175] XP[177]22 [175] [194](693)[177]10 [167] [151] 693,[194](693)[171]10 30480 [158] [165]AD(13),12,17 30482 [153] "";[201](" "[170][196]([194](693)),3);"WAIT" 30490 [137] 30440 30500 [158] [165]AD(7):[158] [165]AD(13),4,1 30510 [153] [163]12);"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^WAIT" 30512 [153] [163]12);"(null)WAIT STR$RUCKER-STR$ATEN (null)WAIT" 30514 [153] [163]12);"-TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN"; 53080 [153] [200](" ",18[171]L);" WAIT(null)" 53090 [153] [163]8);"(null) WAIT(null)" 53100 [153] [163]8);"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXP" 53110 [158] [165]AD(13),13,12:[153] "";T$;[200](" ",L[171][195](T$)) 53120 [158] [165]AD(13),14,10[170]P:[153]" TAB( WAIT" 53130 [161] A$:[139] A$[178]"" [167] 53130 53140 [139] A$[178]"CMD" [175] P[177]1 [167] P[178]P[171]1:[137] 53120 53150 [139] A$[178]"" [175] P[179][178][195](T$) [175] P[179]L [167] P[178]P[170]1:[137] 53120 53160 [139] A$[178]"LOAD" [167] T$[178]"":A$[178]"" 53170 [139] A$[178]"" [167] [158] [165]AD(13),14,11[170]P:[153]" WAIT":P[178]1:[137] 53110 53180 [139] A$[178][199](20) [175] P[177]1 [167] P[178]P[171]1:T$[178][200](T$,P[171]1)[170][202](T$,P[170]1):[137] 53110 53190 [139] A$[178]"SAVE" [167] T$[178][200](T$,P[171]1)[170]" "[170][202](T$,P):[137] 53110 53200 [139] A$[178][199](13) [167] F[178]0:[137] 53260 53210 [139] A$[178]"" [167] F[178]1:[137] 53260 53220 [139] A$[178][199](141) [167] F[178][171]1:[137] 53260 53230 [139] A$[179][199](32) [176] (A$[177][199](127) [175] A$[179][199](160)) [167] 53130 53240 T$[178][200](T$,P[171]1)[170]A$[170][202](T$,P[170]1):[139] P[179]L [167] P[178]P[170]1 53250 [137] 53110 53260 [158] [165]AD(8):[142] 53970 : 53980 [143] *** SHOW FILES *** 53990 : 54000 [158] [165]AD(16),4,1,20,40,32,[194](646) 54010 [129] I[178]0 [164] 19 54020 [158] [165]AD(13),4[170]I,1:[153]" "; 54030 [139] I[170]SF%[178]MF% [167] [153]"CMDSQR"; 54040 [139] I[170]SF%[179][178]AF% [167] [153] [202](FE$(SF%[170]I),2,16); 54050 [158] [165]AD(13),4[170]I,21:[153]" "; 54060 [139] I[170]SF%[170]20[178]MF% [167] [153]"CMDSQR"; 54070 [139] I[170]SF%[170]20[179][178]AF% [167] [153] [202](FE$(SF%[170]20[170]I),2,16); 54080 [130] I 54090 [142] 54970 : 54980 [143] *** ASK YES/NO *** 54990 : 55000 [158] [165]AD(7):[143] - SCR AUF STACK 55002 [158] [165]AD(13),2,9 55004 [153]" WAIT" 55006 [158] [165]AD(13),3,1 55008 [153]" WAIT" 55010 [158] [165]AD(13),8,1 55020 [153] [163]10);"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^" 55030 [153] [163]10);"(null) WAIT(null)" 55040 [153] [163]10);"(null) ";[200](T1$[170]" ",16);" WAIT(null)" 55050 [153] [163]10);"(null) WAIT(null)" 55060 [153] [163]10);"(null) ";[200](T2$[170]" ",16);" WAIT(null)" 55070 [153] [163]10);"(null) *NEWNEWRND *NEWNEWNEWNEWRND WAIT(null)" 55080 [153] [163]10);"(null) WAITGETMID$AGET WAITGET(null)EINGET WAIT(null)" 55090 [153] [163]10);"(null) LOGWAITNEWNEWCOS LOGWAITNEWNEWNEWNEWCOS WAIT(null)" 55100 [153] [163]10);"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXP" 55110 FL[178]FL [176] 128:[141] 51000:[143] * GET MAUS POS 55120 [139] XP[177]11 [175] XP[179]16 [175] YP[177]12 [175] YP[179]16 [167] F[178]0:[137] 55130 55122 [139] XP[177]21 [175] XP[179]28 [175] YP[177]12 [175] YP[179]16 [167] F[178]1:[137] 55130 55124 [137] 55110 55130 [158] [165]AD(8):[158] [165]AD(18):FL[178]FL [175] 127:[142] 59970 : 59980 [143] *** DATEN *** 59990 : 60000 [143] --- COLOR NAMES --- 60010 [131] SCHWARZ,WEISS,ROT,TUERKIS 60020 [131] VIOLETT,GRUEN,BLAU,GELB 60030 [131] ORANGE,BRAUN,HELLROT,GRAU 1 60040 [131] GRAU 2,HELLGRUEN,HELLBLAU,GRAU 3 60050 [143] ------------------- 60060 : 60070 [143] --- FILE TYPES --- 60080 [131] "STR$VAL(null)","(null)VAL(null)","(null)(null)CHR$","(null)(null)(null)","(null)VAL(null)" 60090 [143] ------------------ 60100 : 60110 [143] --- ERROR TEXT --- 60120 [131] "(null)UELLE UNBEKANNT" 60130 [131] "*ZU VIELE STR$ATEIEN" 60140 [131] "*STR$ATEI OFFEN" 60150 [131] "*STR$ATEI NICHT OFFEN" 60160 [131] "STR$ATEI NICHT GEFUNDEN" 60170 [131] "CHR$ERAET NICHT VORHANDEN" 60180 [131] "*KEINE VALINGABE-STR$ATEI" 60190 [131] "*KEINE ATNUSGABE-STR$ATEI" 60200 [131] "*KEIN STR$ATEINAME ANGEGEBEN" 60210 [131] "FALSCHE CHR$ERAETENUMMER" 60220 [131] "*(null)VAL(null)(null) OHNE ASC(null)(null)" 60230 [131] "*(null)YNTAX ASCEHLER" 60240 [131] "*(null)VAL(null)(null)(null)(null) OHNE CHR$(null)(null)(null)PEEK" 60250 [131] "*ZU WENIG STR$ATEN" 60260 [131] "FALSCHER (null)ERTEBEREICH" 60270 [131] "PEEKEREICH UEBERSCHRITTEN" 60280 [131] "*(null)PEICHER VOLL" 60290 [131] "*(null)PRUNGZIEL NICHR GEFUNDEN" 60300 [131] "*ASCALSCHE (null)MSCHREIBUNG" 60310 [131] "*DOPPELTES ASCELD" 60320 [131] "(null)EILEN DURCH (null)ULL" 60330 [131] "*STR$IREKTMODUS" 60340 [131] "*STR$ATEN-(null)YP FALSCH" 60350 [131] "*(null)EXT ZU LANG" 60360 [131] "STR$ATEI-STR$ATEN FALSCH" 60370 [131] "*ASCORMEL ZU KOMPLEX" 60380 [131] "*LEN(null)(null)(null) NICHT ERLAUBT" 60390 [131] "*ASCUNKTION UMBEKANNT" 60400 [131] "*STR$ATEI-(null)EST ASCEHLER" 60410 [131] "(null)ADE ASCEHLER"